Distributed transactions are often performed on distributed computing systems. A distributed transaction is a set of operations that update shared resources. Distributed transactions must satisfy the properties of Atomicity, Consistency, Isolation and Durability, known commonly as the ACID properties. According to the Atomicity property, either the transaction successfully executes to completion, and the effects of all operations are recorded, or the transaction fails. The Consistency property requires that the transaction does not violate integrity constraints of the shared resources. The Isolation property requires that intermediate effects of the transaction are not detectable to concurrent transactions. Finally, the Durability property requires that changes to shared resources due to the transaction are permanent.
To ensure the Atomicity property, all participants of the distributed transaction must coordinate their actions so that they either unanimously abort or unanimously commit to the transaction. Before making any state changes to a resource or resources for the transaction, each participant generates a copy of the present state of the resource or resources to be changed during the transaction. The state changes are then made to the resource during the transaction. If the transaction aborts, then the resource is rolled back to its initial state that was saved.
When the state of the resource is large (e.g., 10 megabytes (MB)), storing a copy of the state can become a burdensome performance overhead. Even if only a small portion (e.g., a few bytes) of a large resource (e.g., a 10 MB object) are to be modified during the transaction, the entire state of the resource (e.g., the entire 10 MB) still needs to be saved in conventional transactional systems. Embodiments of the present invention can mitigate the overhead associated with rolling back aborted transactions.